如何从 Java 设置环境变量?我看到我可以使用ProcessBuilder. 不过,我有几个子进程要启动,所以我宁愿修改当前进程的环境并让子进程继承它。
ProcessBuilder
有一个System.getenv(String)用于获取单个环境变量的方法。我还可以Map使用System.getenv(). 但是,调用put()它Map会引发UnsupportedOperationException- 显然它们意味着环境是只读的。而且,没有System.setenv().
System.getenv(String)
Map
System.getenv()
put()
UnsupportedOperationException
System.setenv()
那么,有没有办法在当前运行的进程中设置环境变量呢?如果是这样,怎么做?如果不是,原因是什么?(是不是因为这是 Java,所以我不应该做邪恶的不可移植的过时的事情,比如触摸我的环境?)如果不是,任何关于管理环境变量更改的好建议,我需要提供给几个子进程?
(是不是因为这是 Java,所以我不应该做邪恶的不可移植的过时的事情,比如触摸我的环境?)
我想你已经一针见血了。
减轻负担的一种可能方法是分解出一种方法
void setUpEnvironment(ProcessBuilder builder) { Map<String, String> env = builder.environment(); // blah blah }
并ProcessBuilder在启动它们之前通过它。
此外,您可能已经知道这一点,但您可以使用相同的ProcessBuilder. 因此,如果您的子流程相同,则无需一遍又一遍地进行此设置。